Skip to content

feat: define content schemas and implement admin editor with components#4

Merged
JsCodeDevlopment merged 3 commits into
mainfrom
dev
May 12, 2026
Merged

feat: define content schemas and implement admin editor with components#4
JsCodeDevlopment merged 3 commits into
mainfrom
dev

Conversation

@JsCodeDevlopment
Copy link
Copy Markdown
Owner

@JsCodeDevlopment JsCodeDevlopment commented May 12, 2026

Refatoração: Editor de Simulados Técnicos & Gestão de Taxonomia

Este documento resume as implementações realizadas para modernizar a criação e edição de Simulados Técnicos na plataforma Algoria, migrando de um modelo baseado em JSON manual para uma interface administrativa modular, poliglota e orientada a dados.

🚀 Resumo Executivo

Transformação completa da experiência administrativa de conteúdos técnicos. Introduzimos uma arquitetura de formulários desacoplada, suporte nativo a múltiplas linguagens de programação com interface estilo IDE e um sistema centralizado de gestão de categorias (tópicos) persistido em base de dados.


✨ Principais Funcionalidades

1. Editor Estruturado & Modular

  • Componentização Clean: O ficheiro monolítico technical-test-form.tsx foi decomposto em sub-componentes especializados (GeneralInfo, Quiz, Challenge, Solutions), facilitando a manutenção e expansão.
  • Sincronização Automática: Edição visual em tempo real com sincronização bidirecional para o formato JSON canônico da plataforma.
  • Type-Safety: Eliminação total do uso de any, garantindo integridade de tipos em todo o fluxo do formulário.

2. Gestão de Taxonomia (Categorias)

  • Tabela de Categorias Oficial: Migração de tópicos "hardcoded" para a nova tabela content_categories no Postgres (Drizzle ORM).
  • Painel CRUD de Categorias: Nova interface em /admin/categories para criar, editar e gerir tópicos oficiais.
  • Seletor Dinâmico: O campo "Tópico" nos testes agora consome dados em tempo real da base de dados, com suporte a busca e criação on-the-fly.

3. Suporte Poliglota (Multi-Language)

  • Configuração de Desafios: Suporte nativo para 6 linguagens: JavaScript, Python, Java, C#, Rust e Go.
  • IDE-Style Toolbar: Interface de ativação e troca de abas inspirada em editores profissionais (VS Code), permitindo configurar templates e runners específicos por idioma.
  • Resoluções Pedagógicas: Sistema de abas nas resoluções para fornecer implementações de referência em todas as linguagens ativas no teste.

🛠 Alterações Técnicas

Base de Dados (Schema)

  • Adição da tabela content_categories (id, name, slug, description, timestamps).
  • Implementação de índices únicos por slug para integridade de URL.

Backend (Server Actions)

  • listCategories: Recuperação eficiente de tópicos oficiais.
  • createCategory / updateCategory / deleteCategory: CRUD administrativo com proteção de rota (requireAdmin).
  • getTechnicalTestTopics: Agregador de tópicos para o seletor do formulário.

Frontend (UI/UX)

  • Contrast Overhaul: Correção de problemas de visibilidade em menus dropdown com fundos ultra-sólidos e sombras 2XL.
  • IDE Tabs: Implementação de sistema de abas com indicadores de cor por linguagem.
  • Micro-interações: Adição de animações de transição e estados de hover refinados.

📝 Guia de Migração (Seed SQL)

Para alimentar o banco com as tags iniciais sugeridas:

INSERT INTO content_categories (id, name, slug, description, "createdAt", "updatedAt")
VALUES 
  (gen_random_uuid(), 'Javascript', 'javascript', 'Fundamentos JS.', now(), now()),
  (gen_random_uuid(), 'Bases de Dados', 'bases-de-dados', 'SQL e NoSQL.', now(), now()),
  (gen_random_uuid(), 'Arquitetura e Performance', 'arquitetura-e-performance', 'Design de sistemas.', now(), now()),
  (gen_random_uuid(), 'Segurança e Arquitetura', 'seguranca-e-arquitetura', 'Segurança ofensiva.', now(), now()),
  (gen_random_uuid(), 'Containers e Linux', 'containers-e-linux', 'Infraestrutura moderna.', now(), now()),
  (gen_random_uuid(), 'Sistemas Distribuídos & Alta Disponibilidade', 'sistemas-distribuidos', 'Escalabilidade.', now(), now()),
  (gen_random_uuid(), 'Arquitetura Concorrente & Performance Crítica', 'concorrencia', 'Otimização crítica.', now(), now())
ON CONFLICT (slug) DO NOTHING;

4. Personalização de Identidade (Foto de Perfil)

  • Upload Inteligente: Novo componente ImageUpload que permite a qualquer utilizador (mesmo sem Google OAuth) alterar a sua foto.
  • Compressão no Cliente: Redimensionamento automático para 300x300px via Canvas API antes do upload, garantindo performance e economia de storage.
  • Armazenamento Otimizado: Persistência direta na tabela user via Base64 (JPEG 0.8), eliminando a necessidade imediata de buckets externos.

@JsCodeDevlopment JsCodeDevlopment self-assigned this May 12, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
algoria Ready Ready Preview, Comment May 12, 2026 7:51pm

@JsCodeDevlopment JsCodeDevlopment merged commit 73d01c9 into main May 12, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant